//class Solution {
//    public int numIslands(char[][] grid) {
//        int n = grid.length;
//        int m = grid[0].length;
//        int count = 0;
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < m; j++) {
//                if (grid[i][j] == '1') {
//                    count++;
//                    dfs(grid, n, m, i, j);
//                }
//            }
//        }
//        return count;
//    }
//
//    public void dfs(char[][] grid, int n, int m, int x, int y) {
//        if (x < 0 || x >= n || y < 0 || y >= m) return;
//        if (grid[x][y] == '1') {
//            grid[x][y] = '.';
//            dfs(grid, n, m, x - 1, y);
//            dfs(grid, n, m, x + 1, y);
//            dfs(grid, n, m, x, y - 1);
//            dfs(grid, n, m, x, y + 1);
//        }
//    }
//}